#pragma once

#include <string>
#include <wchar.h>
#include "USBHub.h"

class USBController
{
public:
	USBController(void);
	~USBController(void);

	int				GetIndex()				{ return m_controllerIndex; }
	std::wstring	GetDriverKeyName()		{ return m_controllerDriverKeyName; }
	std::wstring	GetDevicePath()			{ return m_controllerDevicePath; }
	std::wstring	GetDeviceDescription()	{ return m_controllerDeviceDescription; }

	void			SetIndex(const int index)								{ m_controllerIndex = index; }
	void			SetDevicePath(const wchar_t *pDevicePath)				{ m_controllerDevicePath.assign(pDevicePath); }
	void			SetDeviceDescription(const wchar_t *pDeviceDescription)	{ m_controllerDeviceDescription = pDeviceDescription; }
	void			SetDriverKeyName(const wchar_t *pDriverKeyName)			{ m_controllerDriverKeyName = pDriverKeyName; }

	USBHub*			GetRootHub();

private:
	int				m_controllerIndex;
	std::wstring	m_controllerDriverKeyName;
	std::wstring	m_controllerDevicePath;
	std::wstring	m_controllerDeviceDescription;

	USBHub			*m_pUSBHub;

	void DeleteUSBHub();
};
